const express = require('express')
const path = require('path')
const router = require('./router')
const bodyParser = require('body-parser')
const session = require('express-session')

const app = express()

// __dirname 是 node 里面的其他成员，不带 app.js 的绝对路径，例如 C:/node
// __filename 带后缀名的绝对路径，例如 C:/node/app.js
app.use('/public/', express.static(path.join(__dirname, './public/')))
app.use('/node_modules/', express.static(path.join(__dirname, './node_modules/')))

// 在 Node 中，有很多第三方模板引擎都可以使用，不是只有 art-template
// ejs、jade（pug）、handlebars、nunjucks
app.engine('html', require('express-art-template'))
// 默认就是 ./views 目录
app.set('views', path.join(__dirname, './views/'))

// 配置解析表单 POST 请求体插件（注意：一定要在 app.use(router) 之前 ）
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

// 配置 session 插件,默认内存存取，服务器重启 session 丢失
app.use(session({
    // 配置加密字符串，它会在原有加密基础之上和这个字符串拼起来去加密
    // 目的是为了增加安全性，防止客户端恶意伪造
    // 设置签名秘钥  内容可以任意填写
    secret: 'myitcast',
    //设置cookie的过期时间，例：80s 后 session 和相应的 cookie 失效过期
    cookie:{ maxAge: 60*1000*60 },
    resave: false,
    // 无论你是否使用 Session，我都默认直接给你分配一把钥匙
    saveUninitialized: true,
  }))

app.use(router)

app.listen(3000, function () {
    console.log('running 3000...')
})
